import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// 兼容低版本的移动端浏览器
import legacy from '@vitejs/plugin-legacy'
import glsl from "vite-plugin-glsl";
const dependencies = require('./package.json').dependencies;
// https://vitejs.dev/config/
export default defineConfig({
  base: './',
  plugins: [vue(), glsl({
    compress: true
  }), legacy()],
  build: {
    // 生产环境是否生成 source map
    sourcemap: false,
    // 压缩选项，boolean | 'terser' | 'esbuild'
    // 设置为 'terser' 时，会使用 Terser 进行压缩
    // 设置为 'esbuild' 时，会使用 esbuild 进行压缩
    minify: 'terser',
    rollupOptions: {
      treeshake: true, // 开启 Tree Shaking，消除未使用的代码，减小最终的包大小
      output: {
          // 根据不同的js库 拆分包，减少index.js包体积
          manualChunks(id) {
              if (id.includes('node_modules')) {
                  // 指定需要拆分的第三方库或模块
                  //console.info('id', id)
                  const dependenciesKeys = Object.keys(dependencies);
                  const match = dependenciesKeys.find((item) => {
                      return id.includes(item);
                  });
                  const notSplit: any[] = [];
                  if (match && !notSplit.includes(match)) {
                      return match;
                  }
              }
          },
      },
    }
  },
})
